// object表示一个对象
let a;
a = {};
a = function () { };
// {} 用来指定对象中可以包含那些属性
// 语法：{属性名：属性值，属性名：属性值}；
// let b:{name:string,age:number};
// b ={name:'刘德华',age:18};
// 在属性后面加上？，表示可选择的
let b;
b = { name: "小红" }; //后面的age是可选择的可以有也可以没有
// let c:{name:string};
// c={name:'猪八戒',a:1,b:2}
/*
 *报错后面的属性是多出来的
 *上述可以属性后面加？来设置位置属性，但是如果位置属性太多不合理
 *语法：[自定义属性名：类型]：属性（any）
 */
let c;
c = { name: "小黄", age: 18, gender: '男' };
/*
  设置函数结构的类型声明：
  语法：（形参：类型，形参：类型...)=>返回值
*/
let d;
//  d=function(n1:string,n2:string):number{
//     return 10;
// }
//  数组类型
// string[] 表示字符串数组
let e;
// e=['a','b','c',1,2]  //报错，只能是字符串
// 表示数字数组
// 写法一：类型[]
let f;
f = [1, 2, 3];
// 写法二:Array<类型>
let g;
g = [1, 2, 3];
// 元组类型
/*
  元组是固定长度的数组
  语法：[类型，类型，类型]
*/
let h;
h: ['hello', 123];
/*
  enum 枚举
*/
// let i:{name:string,gender:string};
let i;
i = {
    name: '孙悟空',
    gender: 1 //"male"
};
// console.log(i.gender==="男");
console.log(i.gender === 1);
// 
var Gender;
(function (Gender) {
    Gender[Gender["Male"] = 0] = "Male";
    Gender[Gender["Female"] = 1] = "Female";
})(Gender || (Gender = {}));
let j;
j = {
    name: "孙悟空",
    gender: Gender.Female
};
console.log(i.gender === Gender.Female);
//用&表示同时
let k;
k = { name: "孙悟空", age: 18 };
let m;
let L;
//  m=6;  报错
// 编译  tsc 04_types.ts
